package com.jiazixuan.stock.service;

import com.jiazixuan.stock.pojo.domain.MenusPermDomain;
import com.jiazixuan.stock.pojo.entity.SysRole;
import com.jiazixuan.stock.vo.req.AddRolesAndPermsReqVo;
import com.jiazixuan.stock.vo.req.UpdatePermsByRoleIdReqVo;
import com.jiazixuan.stock.vo.req.UserRolesReqVo;
import com.jiazixuan.stock.vo.resp.PageResult;
import com.jiazixuan.stock.vo.resp.R;

import java.util.List;
import java.util.Map;

public interface RoleService {

    /**
     * 获取用户具有的角色信息，以及所有角色信息
     */
    R<Map<String, Object>> getUserInfomation(String userId);



    /**
     * 更新角色信息
     * @return
     */
     R updateUserRoles(UserRolesReqVo userRoles);

    /**
     * 查询当前所有角色信息
     * @param pageNum
     * @param pageSize
     * @return
     */
    R<PageResult<SysRole>> getRoles(Integer pageNum, Integer pageSize);

    /**
     * 获取权限树列表
     * @return
     */
    R<List<MenusPermDomain>> getMenusPermissions();

    /**
     * 添加角色和角色关联权限(添加角色权限功能实现)
     */
    R addRoleAndRolePermission(AddRolesAndPermsReqVo vo);

    /**
     * 根据角色id查找对应的权限（点击角色编辑弹窗）
     */
    R<List<String>> getPermsByRoleId(String roleId);

    /**
     * 更新角色信息，包含角色关联的权限信息（完成角色编辑）
     */
    R updateRoleAndPermission(UpdatePermsByRoleIdReqVo vo);

    /**
     * 删除角色信息
     * @param roleId
     * @return
     */
    R deleteRole(String roleId);

    /**
     * 更新用户的状态信息
     */
    R updateStatus(String roleId, Integer status);
}
